from datetime import datetime, timedelta
from jose import jwt
from django.conf import settings


def create_token(sub, app=None, valid_seconds=None):
    """创建 token
    app: app 名称, 后续如果多个 app ，需要严格区分
    sub: subject 简称，表示签发给谁的，我们这里保存用户 id
    valid_seconds: 有效秒数，默认 24 小时，如果 valid_seconds 有值则使用 datetime.now() + valid_seconds 计算
    """
    if valid_seconds is None:
        valid_seconds = 60 * 60 * 24

    sub = str(sub)  # 这里我们使用用户 id

    token_dict = dict(
        app=app,
        sub=sub,
        exp=datetime.now() + timedelta(seconds=valid_seconds)
    )

    encoded_jwt = jwt.encode(token_dict, settings.SECRET_KEY)
    return encoded_jwt


def refresh_token(app=None, sub=None, valid_seconds=None):
    """
    将来用 refresh_token 来刷新 access_token
    """
    pass
